package com.cskaoyan.javase.oop2._1extends._5protected._1two;

import com.cskaoyan.javase.oop2._1extends._5protected._0one.CurrentClazz;
import com.cskaoyan.javase.oop2._1extends._5protected._0one.SamePackageSubClazz;

import java.nio.channels.NonReadableChannelException;
import java.util.zip.CRC32;

/**
 * 不同包下的子类
 * CurrentClazz当中的成员变量num有受保护的访问权限
 * 它的访问仍然需要一个对象去访问
 * 现在可能的对象，有以下：
 *      1.直接创建CurrentClazz对象，直接访问num
 *          不能访问的，没有权限
 *
 *      2.创建子类自身对象，访问继承自父类的num
 *          可以访问
 *
 *      3.创建"兄弟姐妹"对象，访问它们继承自父类的num
 *          不能访问，没有权限
 *
 * 于是可以总结：
 * 在不同包下的子类中，访问父类的受保护成员
 * 有且只有一种可能：
 *      直接创建子类自身对象，然后访问子类从父类当中继承过来的受保护成员
 *
 *
 * @since 17:02
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class AnotherPackageSubClazz extends CurrentClazz {
    public static void main(String[] args) {
        // 1.直接创建CurrentClazz对象，直接访问num
        CurrentClazz cc = new CurrentClazz();
        // System.out.println(cc.num);

        // 2.创建子类自身对象，访问继承自父类的num
        AnotherPackageSubClazz apsc = new AnotherPackageSubClazz();
        System.out.println(apsc.num);

        // 3.创建"兄弟姐妹"对象，访问它们继承自父类的num
        SamePackageSubClazz spsc = new SamePackageSubClazz();
        // spsc.num
    }
}
